package at.guigu;

import at.ribbon.LoadBalancerConfig;
import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.ribbon.RibbonClient;
import org.springframework.cloud.netflix.ribbon.RibbonClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@Slf4j
@SpringBootApplication
/* SpringCloud2020版本之前自定义负载均衡规则方式（局部配置）
// 配置自定义负载均衡策略（局部配置）
@RibbonClients(value = {
        @RibbonClient(name = "userservice", configuration = LoadBalancerConfig.class)
})*/
public class OrderApplication {
    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
        log.info("OrderApplication Running");
    }
    /*
    // 微服务远程调用
    // 由于已在config包下创建相关配置类RemoteCallConfig，所以此处注掉，两者功能相同
    // @LoadBalanced：负载均衡注解实现服务消费者对Eureka服务拉取/订阅/发现
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        log.info("restTemplate创建成功，微服务远程调用开启");
        return new RestTemplate();
    }
     */

    /* SpringCloud2020版本之前自定义负载均衡规则方式（全局配置）
    由于已经创建了一个配置类LoadBalancerConfig来进行自定义负载均衡配置
    所以此处注释掉
    @Bean
    public IRule randomRule(){
        log.info("成功自定义负载均衡规则");
        return new RandomRule();
    }
     */
}